package nancal.mp.db.mongo.entity.sys

import nbcp.base.db.annotation.Cn
import nbcp.base.db.annotation.DbEntityGroup
import nbcp.base.model.BaseMarkEntity
import org.springframework.data.mongodb.core.mapping.Document

@Document
@DbEntityGroup("sys")
@Cn("网关路由定义")
open class GatewayRouteDefine(
    var name: String = "",
    var target: String = "",

    //阻断，不转发！
    var isBlock: Boolean = false,

//    var mappingPrefix: String = "",
//    var mappingKey: String = "",
//
//    var mappingPathLength: Int = 0,
//    var mappingPathStep: Int = 0,

    var remark: String = ""
) : BaseMarkEntity() {

//    fun getEncryptPath(value: String): String {
//        var path = getEncryptJsonKey(value);
//        var paths = mutableListOf<String>();
//
//        if (mappingPathLength > 0 && mappingPathLength < path.length) {
//            var count = -1;
//            var prevIndex = 0;
//            while (true) {
//                count++;
//
//                var item = path.Slice(prevIndex, mappingPathLength + count * mappingPathStep);
//                if (item.isEmpty()) {
//                    break;
//                }
//                paths.add(item)
//                prevIndex = mappingPathLength + count * mappingPathStep;
//            }
//
//            path = paths.joinToString("/")
//        }
//
//        return "/${mappingPrefix}/${mappingKey}/${path}"
//    }
//
//    fun getEncryptJsonKey(value: String): String {
//        //base64中包含 + / =
//        //不转义字符有： - _ . ! ~ * '  合法的jsonKey有 -_
//        CodeUtil.getCode()
//        return CipherUtil.encryptDes(value + "\n" + mappingKey)
//            .replace("\n", "")
//    }
//
//    fun getEncryptJson(value: Map<String, Any?>) {
//        RecursionUtil.recursionJson(value, {
//            var map = it as MutableMap<String, Any?>;
//            var keys = map.keys.toList();
//            keys.forEach { key ->
//                map.put(getEncryptJsonKey(key), map[key]);
//                map.remove(key);
//            }
//            return@recursionJson true
//        }, {
//            return@recursionJson true
//        })
//    }
//
//
//    fun getDecryptPath(value: String): String {
//        var prefix = "/${mappingPrefix}/${mappingKey}/"
//        if (!value.startsWith(prefix)) {
//            throw RuntimeException("非法地址!")
//        }
//
//        var path = value.Slice(prefix.length, value.length).remove('/');
//
//        return getDecryptJsonKey(path);
//    }
//
//    fun getDecryptJsonKey(value: String): String {
//        return CipherUtil.decryptDes(value).split("\n").first();
//    }
//
//    fun getDecryptJson(value: Map<String, *>) {
//        RecursionUtil.recursionJson(value, {
//            var map = it as MutableMap<String, Any?>;
//            var keys = map.keys.toList();
//            keys.forEach { key ->
//                var oriKey = getDecryptJsonKey(key)
//                map.put(oriKey, map[key]);
//                map.remove(key);
//            }
//            return@recursionJson true
//        }, {
//            return@recursionJson true
//        })
//    }
}